package org.fund.base_service.service;

import org.fund.base_service.domain.Position;
import org.fund.base_service.domain.TransactionRecord;
import org.fund.base_service.domain.vo.PositionVO;
import org.fund.base_service.domain.vo.TransactionRecordVO;

import java.text.ParseException;
import java.util.List;

/**
 * 持仓(Position)表服务接口
 *
 * @author makejava
 * @since 2022-03-13 01:28:43
 */
public interface PositionService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    PositionVO queryById(Integer id);

    /**
     *
     * @return 查询结果
     */
    List<PositionVO> queryAll();

    /**
     * 新增持仓
     *
     * @param position 实例对象
     * @return 实例对象
     */
    void addPosition(Position position);

    /**
     * 修改数据
     *
     * @param position 实例对象
     * @return 实例对象
     */
    void update(Position position);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 买入
     */
    void purchase(TransactionRecordVO record) throws ParseException;

    /**
     * 快速添加
     * @param position
     */
    void quickAdd(Position position);

    /**
     * 买入
     * @param record
     */
    void sale(TransactionRecordVO record);

    /**
     * 撤销
     * @param record
     */
    void revoke(TransactionRecordVO record);
}
